package com.dragon.modules.yuegou.enums.marketing;

import com.fasterxml.jackson.annotation.JsonCreator;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 广告类型
 * 
 * @author pbuilder generated
 *
 */
public enum AdvertisementAdType {

	/**
	 * BANNER页
	 */
	BANNER(0, "BANNER页"),
	/**
	 * 品宣
	 */
	BRAND(1, "品宣"),
	/**
	 * 悦卡支付成功页
	 */
	CARD(2, "悦卡支付成功页"),
	/**
	 * 优惠停车
	 */
	PARKING(3, "优惠停车"),
	/**
	 * 停车支付成功
	 */
	PARKPAID(4, "停车支付成功"),
	/**
	 * 首页弹窗
	 */
	ALERT(5, "首页弹窗"),
	/**
	 * 扫码领停车券
	 */
	SCANGETPARKCOUPON(6, "扫码领停车券"),
	/**
	 * 支付成功页
	 */
	PAYED(7, "支付成功页"),
	/**
	 * 楼盘推荐
	 */
	HOUSES(8, "楼盘推荐"),
	/**
	 * 酒店推荐
	 */
	HOTEL(9, "酒店推荐"),
	/**
	 * 新车推荐
	 */
	CAT(10, "新车推荐"),
	/**
	 * 地产企业
	 */
	REAL_ESTATE(11, "地产企业"),
	/**
	 * 酒店企业
	 */
	HOTEL_COMPANY(12, "酒店企业"),
	/**
	 * 汽车企业
	 */
	CAT_COMPANY(13, "汽车企业"),
	/**
	 * 大汉资讯
	 */
	INFORMATION(14, "大汉资讯"),
	/**
	 * 直播
	 */
	LIVE(15, "直播");

	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private AdvertisementAdType(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}
	
	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 * 
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 * 
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 * 
	 * @param code 代码
	 * @return
	 */
	@JsonCreator
	public static AdvertisementAdType from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * Code Map for AdvertisementAdType
	 */
	private static final Map<Integer, AdvertisementAdType> CODE_MAP = Stream.of(AdvertisementAdType.values())
			.collect(Collectors.toMap(AdvertisementAdType::getCode, e -> e));

}
